﻿/*
 * Created by SharpDevelop.
 * User: LBALERI
 * Date: 12/02/2013
 * Time: 09:57 a.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;

namespace CapturaImagen
{
	/// <summary>
	/// Description of ListadoAtributos.
	/// </summary>
	public partial class ListadoAtributos : Form
	{
		public ListadoAtributos()
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
		}
		
		
		
		void ListadoAtributosLoad(object sender, EventArgs e)
		{
			cargarData();
		}
		
		void cargarData(){
			
			DataSet ds = DAOAtributos.listarAtributos();
            bindingSource1.DataSource = ds.Tables[0];
            bindingNavigator1.BindingSource = bindingSource1;
            dgvAtributos.DataSource = bindingSource1;
			
            dgvAtributos.Columns[0].HeaderText = "Nombre";
			dgvAtributos.Columns[1].HeaderText = "Fecha de Ingreso";
			dgvAtributos.Columns[2].HeaderText = "Batch/Lote";
			dgvAtributos.Columns[3].HeaderText = "Clase";
			dgvAtributos.Columns[4].HeaderText = "Fuera de Tipo";
			dgvAtributos.Columns[5].HeaderText = "Daño Biológico";
			dgvAtributos.Columns[6].HeaderText = "Grano POP";
			dgvAtributos.Columns[7].HeaderText = "Color del Grano";
			dgvAtributos.Columns[8].HeaderText = "Color del Marlo";
			dgvAtributos.Columns[9].HeaderText = "Observación";

            tscmbFiltrar.Items.Clear();
            tscmbFiltrar.Text = "Filtrar por...";
            for (int i = 0; i < dgvAtributos.ColumnCount ; i++)
            {
                if (!dgvAtributos.Columns[i].HeaderText.Equals("Observación"))
                {
                    tscmbFiltrar.Items.Add(dgvAtributos.Columns[i].HeaderText);
                }
               
            }

            tscmbFiltrar.Items.Add("Campaña");

            tsbtnFiltrar.Visible = false;
			
		}
		
		
        private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "AltaMuestra").SingleOrDefault<Form>();

            if (existe != null)
            {

                existe.WindowState = FormWindowState.Normal;

            }
            else
            {
                AltaMuestra alta = new AltaMuestra();
                alta.FormClosed += new System.Windows.Forms.FormClosedEventHandler(alta_FormClosed);
                alta.Show();

              }
            }

        private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
        {
            Boolean eliminado = false;
            if (null != dgvAtributos.CurrentRow)
            {
                DialogResult resp = MessageBox.Show("Al eliminar la muestra se borraran todos los datos asociados.\n ¿Desea continuar?", "Alerta", MessageBoxButtons.YesNo);
                if (resp.Equals(DialogResult.Yes))
                {
                    String nombre = dgvAtributos.CurrentRow.Cells["muestra"].Value.ToString();
                    int idMuestra = DAOAtributos.buscarMuestraPorNumero(nombre);
                    String rutaImagen = DAOAtributos.obtenerRutaImagen(nombre);
                    if (null != rutaImagen)
                    {
                        eliminado = DAOAtributos.eliminarMuestra(nombre, idMuestra, rutaImagen);
                    }
                    else
                    {
                        eliminado = DAOAtributos.eliminarMuestra(nombre, idMuestra, "");
                    }
                    if (eliminado)
                    {
                        MessageBox.Show("Muestra Eliminada Correctamente!", "Exito", MessageBoxButtons.OK);
                        cargarData();
                    }
                    else
                    {
                        MessageBox.Show("No se pudo eliminar la muestra!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            
        }

        private void tsbtnModificar_Click(object sender, EventArgs e)
        {
            Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "ModificarMuestra").SingleOrDefault<Form>();

            if (existe != null)
            {

                existe.WindowState = FormWindowState.Normal;

            }
            else
            {
                if (null != dgvAtributos.CurrentRow)
                {
                    String nombre = dgvAtributos.CurrentRow.Cells["muestra"].Value.ToString();
                    ModificarMuestra.nombreMuestra = nombre;
                    ModificarMuestra modifica = new ModificarMuestra();
                    modifica.FormClosed += new System.Windows.Forms.FormClosedEventHandler(modifica_FormClosed);
                    modifica.Show();
                }
            }
        }

        private void alta_FormClosed(object sender, FormClosedEventArgs e)
        {

            cargarData();

        }

        private void modifica_FormClosed(object sender, FormClosedEventArgs e)
        {

            cargarData();

        }

        private void dgvAtributos_SelectionChanged(object sender, EventArgs e)
        {
            if (null != dgvAtributos.CurrentRow)
            {
                String rutaImagen = DAOAtributos.obtenerRutaImagen(dgvAtributos.CurrentRow.Cells["muestra"].Value.ToString());
                pbImagen.SizeMode = PictureBoxSizeMode.StretchImage;
                if (string.IsNullOrEmpty(rutaImagen))
                {
                    pbImagen.ImageLocation = Application.StartupPath + @"\Imagenes\SinFoto.JPG";
                }
                else
                {
                    pbImagen.ImageLocation = rutaImagen;
                }
            }
        }

        private void pbImagen_Click(object sender, EventArgs e)
        {
            try
            {
                String muestra = dgvAtributos.CurrentRow.Cells["muestra"].Value.ToString();
                String carpeta = dgvAtributos.CurrentRow.Cells["clase"].Value.ToString();
                if (pbImagen.ImageLocation.Equals(Application.StartupPath + @"\Imagenes\SinFoto.JPG"))
                {
                    DialogResult resp = MessageBox.Show("¿Desea grabar una imagen?", "Alerta", MessageBoxButtons.YesNo);
                    if (resp.Equals(DialogResult.Yes))
                    {
                        CargarImagen imagen = new CargarImagen();
                        imagen.cargarDatosImagen(muestra, carpeta);
                        imagen.Show();
                    }
                }
                else
                {
                   
                    String archivo = DAOAtributos.obtenerRutaImagen(muestra);
                    Process.Start(archivo);
                }
               
            }
            catch (Exception ex)
            {
                EscribirLog.escribirArchivo(ex.Message);
                MessageBox.Show("No se puede mostrar el archivo!!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void foto_FormClosed(object sender, FormClosedEventArgs e)
        {

            cargarData();

        }

        private void tstxtBusqueda_TextChanged(object sender, EventArgs e)
        {
            //filtros del dgv
            try
            {
                if (string.IsNullOrEmpty(tstxtBusqueda.Text.Trim()))
                {
                    tsbtnFiltrar.Visible = false;
                    tsbtnFiltrar.Enabled = false;
                    this.bindingSource1.RemoveFilter();
                    return;
                }
                if (tscmbFiltrar.Text.Equals("Nombre"))
                {
                    tsbtnFiltrar.Visible = false;
                    tsbtnFiltrar.Enabled = false;
                    this.bindingSource1.Filter = "muestra LIKE '%" + this.tstxtBusqueda.Text + "%'";
                }

                else if (tscmbFiltrar.Text.Equals("Fecha de Ingreso"))
                {
                    tsbtnFiltrar.Visible = true;
                    tsbtnFiltrar.Enabled = true;
                }

                else if (tscmbFiltrar.Text.Equals("Batch/Lote"))
                {
                    tsbtnFiltrar.Visible = false;
                    tsbtnFiltrar.Enabled = false;
                    this.bindingSource1.Filter = "batch_lote LIKE '%" + this.tstxtBusqueda.Text + "%'";
                }
                else if (tscmbFiltrar.Text.Equals("Clase"))
                {
                    tsbtnFiltrar.Visible = false;
                    tsbtnFiltrar.Enabled = false;
                    this.bindingSource1.Filter = "clase LIKE '%" + this.tstxtBusqueda.Text + "%'";
                }
                else if (tscmbFiltrar.Text.Equals("Fuera de Tipo"))
                {
                    tsbtnFiltrar.Visible = true;
                    tsbtnFiltrar.Enabled = true;
                }

                else if (tscmbFiltrar.Text.Equals("Daño Biológico"))
                {
                    tsbtnFiltrar.Visible = true;
                    tsbtnFiltrar.Enabled = true;
                }
                else if (tscmbFiltrar.Text.Equals("Grano POP"))
                {
                    tsbtnFiltrar.Visible = true;
                    tsbtnFiltrar.Enabled = true;
                }
                else if (tscmbFiltrar.Text.Equals("Color del Grano"))
                {
                    tsbtnFiltrar.Visible = false;
                    tsbtnFiltrar.Enabled = false;
                    this.bindingSource1.Filter = "color_grano LIKE '%" + this.tstxtBusqueda.Text + "%'";
                }
                else if (tscmbFiltrar.Text.Equals("Color del Marlo"))
                {
                    tsbtnFiltrar.Visible = false;
                    tsbtnFiltrar.Enabled = false;
                    this.bindingSource1.Filter = "color_marlo LIKE '%" + this.tstxtBusqueda.Text + "%'";
                }
                else if (tscmbFiltrar.Text.Equals("Campaña"))
                {
                    tsbtnFiltrar.Visible = true;
                    tsbtnFiltrar.Enabled = true;
                }
            }
            catch (Exception ex) 
            {
                EscribirLog.escribirArchivo(ex.Message);
                MessageBox.Show("Error al aplicar filtro!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);   
            }
                    
        }
        private void tsbtnFiltrar_Click(object sender, EventArgs e)
        {
           //filtro por fecha
                try
                {
                    if (tscmbFiltrar.Text.Equals("Fecha de Ingreso"))
                    {
                        this.bindingSource1.Filter = "fecha_ingreso = '" + this.tstxtBusqueda.Text + "'";
                    }
                    else if (tscmbFiltrar.Text.Equals("Fuera de Tipo"))
                    {
                        this.bindingSource1.Filter = "fueraDeTipo = '" + this.tstxtBusqueda.Text + "'";
                    }
                    else if (tscmbFiltrar.Text.Equals("Daño Biológico"))
                    {
                        this.bindingSource1.Filter = "danioBiologico = '" + this.tstxtBusqueda.Text + "'";
                    }
                    else if (tscmbFiltrar.Text.Equals("Grano POP"))
                    {
                        this.bindingSource1.Filter = "granoPOP = '" + this.tstxtBusqueda.Text + "'";
                    }
                    else if (tscmbFiltrar.Text.Equals("Campaña"))
                    {
                        filtroPorCampania(tstxtBusqueda.Text.Trim());
                    }
                }
                catch (Exception ex)
                {
                    EscribirLog.escribirArchivo(ex.Message);
                    MessageBox.Show("No se pudo ejecutar el filtro!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
               
            }

        private void tsbtnExportar_Click(object sender, EventArgs e)
        {
            if (null != dgvAtributos.CurrentCell)
            {
                Herramientas.exportarAExcel(dgvAtributos);
            }
            else
            {
                MessageBox.Show("La tabla está vacia!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            
        }

        private void filtroPorCampania(string anio)
        {
            try
            {
                this.bindingSource1.Filter = "SUBSTRING ( CONVERT(fecha_ingreso,System.String) ,6 , 4 ) = " + anio + "";

            }
            catch (Exception ex)
            {
                EscribirLog.escribirArchivo(ex.Message);
                return;
            }
        
        }

	}
}
